package com.lonely.product.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lonely.common.core.domain.StatusInfo;
import com.lonely.product.domain.dto.sewing.QueryOrderSewingPageDTO;
import com.lonely.product.domain.dto.sewing.SewingCompletedDTO;
import com.lonely.product.domain.dto.sewing.StartSewingDTO;
import com.lonely.product.domain.entity.SysOrderSewing;
import com.lonely.product.domain.vo.sewing.QueryOrderSewingPageVO;
import com.lonely.system.domain.entity.SysFactory;

import java.util.List;

/**
 * @author : 黄志标
 * @date: 2025/8/12 9:40
 * @description: 订单车缝服务接口
 */
public interface IOrderSewingService extends IService<SysOrderSewing> {

    /**
     * 生成订单车缝数据
     *
     * @param produceOrderId
     */
    void createOrderSewing(Long produceOrderId);

    /**
     * 车缝分页查询
     *
     * @param queryDto
     * @return
     */
    Page<QueryOrderSewingPageVO> page(QueryOrderSewingPageDTO queryDto);

    /**
     * 获取状态信息
     *
     * @param queryDto
     * @return
     */
    List<StatusInfo> getStatusInfo(QueryOrderSewingPageDTO queryDto);

    /**
     * 车缝分页查询
     *
     * @param queryDto
     * @return
     */
    Page<QueryOrderSewingPageVO> outsourcePage(QueryOrderSewingPageDTO queryDto);

    /**
     * 获取状态信息
     *
     * @param queryDto
     * @return
     */
    List<StatusInfo> getOutsourceStatusInfo(QueryOrderSewingPageDTO queryDto);

    /**
     * 开始车缝
     *
     * @param requestDto
     */
    void startSewing(StartSewingDTO requestDto);

    /**
     * 订单分单后置处理
     *
     * @param produceOrderIds
     * @param sysFactory
     */
    void orderSplitAfterProcess(List<Long> produceOrderIds, SysFactory sysFactory);

    /**
     * 车缝完工
     *
     * @param requestDto
     */
    void sewingCompleted(SewingCompletedDTO requestDto);

    /**
     * 获取默认的开始车缝数
     *
     * @param sewingId 车缝id
     * @return
     */
    String getDefaultStartSewingQuantity(Long sewingId);

    /**
     * 获取默认的车缝完工数
     *
     * @param sewingId
     * @return
     */
    String getDefaultCompletedSewingQuantity(Long sewingId);
}
